package co.uk.digitalify;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import pojos.Producto;
import pojos.Usuario;
import util.Servicio;
import android.os.Bundle;
import android.content.Intent;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class ProductosActivity extends FragmentActivity implements ProductoDetalleInterface {
	
	private Button verMasAd;
	private Button verMasVe;
	private TextView tvProdVe;
	private Gson gs=new GsonBuilder().setDateFormat(Servicio.getSdf().toPattern()).create();
	private Usuario usuarioLogueado;
	private LinearLayout llProdAd;
	private LinearLayout llProdVe;
	private ListaProductosFragment listaProdAd;
	private ListaProductosFragment listaProdVe;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_productos);
		cargarDatos();
	}

	private void cargarDatos() {
		//localizar Views
		llProdAd=(LinearLayout)findViewById(R.id.llProductosAdLite);
		verMasAd=(Button)findViewById(R.id.btnVerMasAd);		
		llProdVe=(LinearLayout)findViewById(R.id.llProductosVeLite);
		verMasVe=(Button)findViewById(R.id.btnVerMasVe);
		tvProdVe=(TextView)findViewById(R.id.tvProdVeTit);
		
		//Obtener Usuario
		usuarioLogueado=gs.fromJson(this.getIntent().getStringExtra("UsuarioJSON"), Usuario.class);
		//Ocultar lo que no puede tocar el usuario
		int tipoUsuario=usuarioLogueado.getUsu_tipo();
		switch(tipoUsuario) {
			case Usuario.ESTANDARD:
				//Toast.makeText(this, "Usuario Estandar", Toast.LENGTH_LONG).show();
				llProdVe.setVisibility(View.GONE);
				verMasVe.setVisibility(View.GONE);
				tvProdVe.setVisibility(View.GONE);
				break;
			case Usuario.PROVEEDOR:
				cargarProductosEnVenta();
				break;
		}
		
		FragmentManager fm=getSupportFragmentManager();
		listaProdAd=(ListaProductosFragment) fm.findFragmentByTag("listaProdAd");
		if(listaProdAd==null) {
			listaProdAd=new ListaProductosFragment();
			Bundle args=new Bundle();
			args.putString("tipo_resp", getString(R.string.productoAd));
			args.putInt("idUsuario", usuarioLogueado.getId());
			args.putString("limit", "3");
			listaProdAd.setArguments(args);
			fm.beginTransaction()
			.add(R.id.llProductosAdLite, listaProdAd, "listaProdAd")
			.commit();
		}
	}

	private void cargarProductosEnVenta() {
		FragmentManager fm=getSupportFragmentManager();
		listaProdVe=(ListaProductosFragment) fm.findFragmentByTag("listaProdVe");
		if(listaProdVe==null) {
			listaProdVe=new ListaProductosFragment();
			Bundle args=new Bundle();
			args.putString("tipo_resp", getString(R.string.productoVe));
			args.putInt("idUsuario", usuarioLogueado.getId());
			args.putString("limit", "3");
			listaProdVe.setArguments(args);
			fm.beginTransaction()
			.add(R.id.llProductosVeLite, listaProdVe, "listaProdVe")
			.commit();
		}		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.productos, menu);
		return true;
	}
	
	@Override 
	public boolean onOptionsItemSelected(MenuItem item) {
		 
        switch (item.getItemId()) {

        case R.id.acercaDe:
        	Intent iAcercaDe = new Intent(this, AcercaDeActivity.class);	 
            startActivity(iAcercaDe);
            break;
        case R.id.ayuda:
            // falta ver si se hace general o especifico para cada pantalla
        	Intent iAyuda = new Intent(this, AyudaActivity.class);	 
            startActivity(iAyuda);
            break;
        case R.id.configuracion:
            // falta concretar que incluimos
        	Intent iConfig = new Intent(this, Configuracion.class);	 
            startActivity(iConfig);
            break;
        }
        return true; 
	}
	
	public void cargarListaProdAd(View v) {		
		Intent lanzar=new Intent(this, ListaProductosActivity.class);
		String uJson=gs.toJson(usuarioLogueado);
		lanzar.putExtra("UsuarioJSON", uJson);
		lanzar.putExtra("idUsuario", usuarioLogueado.getId());		
		lanzar.putExtra("tipo_resp", getString(R.string.productoAd));
		startActivity(lanzar);
	}
	
	public void cargarProductosVent(View v) {
		Intent lanzar=new Intent(this, ListaProductosActivity.class);
		String uJson=gs.toJson(usuarioLogueado);		
		lanzar.putExtra("UsuarioJSON", uJson);
		lanzar.putExtra("idUsuario", usuarioLogueado.getId());		
		lanzar.putExtra("tipo_resp", getString(R.string.productoVe));
		startActivity(lanzar);
	}	
	

	@Override
	protected void onResume(){
	// Al volver a la actividad se comprueba el estado de la musica
		if (Musica.get_mireproductor() == null){
			Musica.reproduce(this, R.raw.avenetia_red);
		 }
	    super.onResume();
	}
	
	public void btnProdTiendaOnClick(View v) {
		Intent datos=new Intent();
		datos.putExtra("GO_TO", "TIENDA");
		setResult(RESULT_OK, datos);
		finish();
	}

	@Override
	public void lanzarProductoDetalle(int prodId) {
		Intent lanzar=new Intent(this, ProductoDetalleActivity.class);
		lanzar.putExtra("prodId", prodId);		
		String uJson=gs.toJson(usuarioLogueado);
		lanzar.putExtra("UsuarioJSON", uJson);
		startActivity(lanzar);
		
	}
}
